home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 5 / Gold Medal Software - Volume 5 (Gold Medal) (1995).iso / database / cff51b.arj / SEQTEST.C < prev    next >
C/C++ Source or Header  |  1993-10-22  |  9KB  |  280 lines

  1. /* SEQTEST.C */
  2. /* Copyright 1990, 1991, 1992, 1993 Norman D. Culver Ft. Lauderdale, FL */
  3. /*                    All Rights Reserved                                   */
  4.  
  5. #include <stdlib.h>
  6. #include "../cff.h"
  7.  
  8. static void seq_test1(void *hd, void *hd1);
  9. static void seq_test2(void *hd, void *hd1);
  10. static void seq_test3(void *hd, void *hd1);
  11.  
  12. void
  13. main()
  14. {
  15. void *hd, *hd1;
  16.  
  17.     cfport_settestflags(1);
  18.     cfinit("seqtest",512,NULL);
  19.     cfprintf("SEQUENTIAL ACCESS TESTS.\n");
  20.  
  21.     hd = cfopen("EXTDMEM/seq1", F_RDWR|F_CREAT|F_HUGEDIR, NULL);
  22.     hd1 = cfopen("EXTDMEM/seq2", F_RDWR|F_CREAT|F_SORTED|F_HUGEDIR, NULL);
  23.     seq_test1(hd, hd1);
  24.     seq_test2(hd, hd1);
  25.     seq_test3(hd, hd1);
  26.     cfclose(hd);
  27.     cfclose(hd1);
  28.     cfexit();
  29. }
  30.  
  31. static void
  32. seq_test1(void *hd, void *hd1)
  33. {
  34. long i;
  35. Item myitem;
  36. unsigned long finds[200];
  37.  
  38.     cfprintf("Begin seq_test1 -- keyed inserts\n");
  39.     myitem.a2.type = STO_VALUE;
  40.     for(i = 0; i < 200; ++i)
  41.     {
  42.         myitem.a0 = i;
  43.         if(cfinsert(hd, &i, 4, &myitem) != OK)
  44.             cfprintf("Insert failed for hash at i=%d\n", i);
  45.         if(cfinsert(hd1, &i, 4, &myitem) != OK)
  46.             cfprintf("Insert failed for tree at i=%d\n", i);
  47.     }
  48.     myitem.a0 = 1000;
  49.     if(cfhead(hd, &myitem) != OK)
  50.         cfprintf("Head failed for hash dir.\n");
  51.     if(myitem.a0 > 199)
  52.         cfprintf("Data failed for Head hashdir =%d\n", myitem.a0);
  53.  
  54.     myitem.a0 = 1000;
  55.     if(cftail(hd, &myitem) != OK)
  56.         cfprintf("Tail failed for hash dir.\n");
  57.     if(myitem.a0 > 199)
  58.         cfprintf("Data failed for Tail hashdir =%d\n", myitem.a0);
  59.     
  60.     cfhead(hd1, &myitem);
  61.     if(myitem.a0 != 0)
  62.         cfprintf("Head failed for tree dir.\n");
  63.     cftail(hd1, &myitem);
  64.     if(myitem.a0 != 199)
  65.         cfprintf("Tail failed for tree dir.\n");
  66.  
  67.     cfhead(hd, &myitem);
  68.     finds[myitem.a0] = myitem.a0;
  69.     cfhead(hd1, NULL);
  70.     for(i = 1; i < 200; ++i)
  71.     {
  72.         if(cfnext(hd, &myitem) != OK)
  73.             cfprintf("Next failed for hashdir at i=%d item=%d\n", i, myitem.a0);
  74.         if(myitem.a0 > 199)
  75.             cfprintf("Data failed for Next hashdir at i=%d item=%d\n", i, myitem.a0);
  76.         finds[myitem.a0] = myitem.a0;
  77.  
  78.         myitem.a0 = 0;
  79.         if(cfnext(hd1, &myitem) != OK)
  80.             cfprintf("Next failed for treedir at i=%d item=%d\n", i, myitem.a0);
  81.         if(myitem.a0 != i)
  82.             cfprintf("Data failed for Next treedir at i=%d item=%d\n", i, myitem.a0);
  83.     
  84.     }
  85.     cftail(hd, &myitem);
  86.     finds[myitem.a0] = myitem.a0;
  87.     cftail(hd1, NULL);
  88.     for(i=198; i >= 0; --i)
  89.     {
  90.         if(cfprev(hd, &myitem) != OK)
  91.             cfprintf("Prev failed for hashdir at i=%d item=%d\n", i, myitem.a0);
  92.         if(myitem.a0 > 199)
  93.             cfprintf("Data failed for Prev hashdir at i=%d item=%d\n", i, myitem.a0);
  94.         finds[myitem.a0] = myitem.a0;
  95.  
  96.         myitem.a0 = 0;
  97.         if(cfprev(hd1, &myitem) != OK)
  98.             cfprintf("Prev failed for treedir at i=%d item=%d\n", i, myitem.a0);
  99.         if(myitem.a0 != i)
  100.             cfprintf("Data failed for Prev treedir at i=%d item=%d\n", i, myitem.a0);
  101.  
  102.     }
  103.     for(i = 0; i < 200; ++i)
  104.         if(finds[i] != i)
  105.             cfprintf("Hash find failed at i=%d data=%d\n", i, finds[i]);
  106.  
  107.     cfprintf("End seq_test1\n");
  108. }
  109. static void
  110. seq_test2(void *hd, void *hd1)
  111. {
  112. long i;
  113. Item myitem;
  114. unsigned long finds[200];
  115.  
  116.     cfprintf("Begin seq_test2 -- dupnum inserts\n");
  117.     myitem.a2.type = STO_VALUE;
  118.     for(i = 0; i < 200; ++i)
  119.     {
  120.     long numdups;
  121.         myitem.a0 = i;
  122.         if(cfinsert_dupnum(hd, "NAME", 4, &myitem, &numdups) != OK)
  123.             cfprintf("Insert failed for hash at i=%d\n", i);
  124.         if(numdups != i+1)
  125.             cfprintf("Wrong number of dups for hash is=%d should be=%d\n", numdups, i+1);
  126.         if(cfinsert_dupnum(hd1, "NAME", 4, &myitem, &numdups) != OK)
  127.             cfprintf("Insert failed for tree at i=%d\n", i);
  128.         if(numdups != i+1)
  129.             cfprintf("Wrong number of dups for tree is=%d should be=%d\n", numdups, i+1);
  130.     }
  131.     myitem.a0 = 1000;
  132.     if(cfhead_dupnum(hd, "NAME", 4, &myitem) != OK)
  133.         cfprintf("Head failed for hash dir.\n");
  134.     if(myitem.a0 > 199)
  135.         cfprintf("Data failed for Head hashdir =%d\n", myitem.a0);
  136.  
  137.     myitem.a0 = 1000;
  138.     if(cftail_dupnum(hd, "NAME", 4, &myitem) != OK)
  139.         cfprintf("Tail failed for hash dir.\n");
  140.     if(myitem.a0 > 199)
  141.         cfprintf("Data failed for Tail hashdir =%d\n", myitem.a0);
  142.     
  143.     myitem.a0 = 1000;
  144.     if(cfhead_dupnum(hd1, "NAME", 4, &myitem) != OK)
  145.         cfprintf("Head failed for tree dir.\n");
  146.     if(myitem.a0 != 0)
  147.         cfprintf("Data failed for Head treedir =%d\n", myitem.a0);
  148.     if(cftail_dupnum(hd1, "NAME", 4, &myitem) != OK)
  149.         cfprintf("Tail failed for tree dir.\n");    
  150.     if(myitem.a0 != 199)
  151.         cfprintf("Data failed for Tail treedir =%d\n", myitem.a0);
  152.  
  153.     cfhead_dupnum(hd, "NAME", 4, &myitem);
  154.     finds[myitem.a0] = myitem.a0;
  155.     cfhead_dupnum(hd1, "NAME", 4, &myitem);
  156.     for(i = 1; i < 200; ++i)
  157.     {
  158.         if(cfnext_dupnum(hd, "NAME", 4, &myitem) != OK)
  159.             cfprintf("Next failed for hashdir at i=%d item=%d\n", i, myitem.a0);
  160.         if(myitem.a0 > 199)
  161.             cfprintf("Data failed for Next hashdir at i=%d item=%d\n", i, myitem.a0);
  162.         finds[myitem.a0] = myitem.a0;
  163.  
  164.         myitem.a0 = 0;
  165.         if(cfnext_dupnum(hd1, "NAME", 4, &myitem) != OK)
  166.             cfprintf("Next failed for treedir at i=%d item=%d\n", i, myitem.a0);
  167.         if(myitem.a0 != i)
  168.             cfprintf("Data failed for Next treedir at i=%d item=%d\n", i, myitem.a0);
  169.     }
  170.     cftail_dupnum(hd, "NAME", 4, &myitem);
  171.     finds[myitem.a0] = myitem.a0;
  172.     cftail_dupnum(hd1, "NAME", 4, NULL);
  173.     for(i=198; i >= 0; --i)
  174.     {
  175.         if(cfprev_dupnum(hd, "NAME", 4, &myitem) != OK)
  176.             cfprintf("Prev failed for hashdir at i=%d item=%d\n", i, myitem.a0);
  177.         if(myitem.a0 > 199)
  178.             cfprintf("Data failed for Prev hashdir at i=%d item=%d\n", i, myitem.a0);
  179.         finds[myitem.a0] = myitem.a0;
  180.  
  181.         myitem.a0 = 0;
  182.         if(cfprev_dupnum(hd1, "NAME", 4, &myitem) != OK)
  183.             cfprintf("Prev failed for treedir at i=%d item=%d\n", i, myitem.a0);
  184.         if(myitem.a0 != i)
  185.             cfprintf("Data failed for Prev treedir at i=%d item=%d\n", i, myitem.a0);
  186.  
  187.     }
  188.     for(i = 0; i < 200; ++i)
  189.         if(finds[i] != i)
  190.             cfprintf("Hash find failed at i=%d data=%d\n", i, finds[i]);
  191.  
  192.     cfprintf("End seq_test2\n");
  193. }
  194. static void
  195. seq_test3(void *hd, void *hd1)
  196. {
  197. long i;
  198. Item myitem;
  199. unsigned long finds[200];
  200.  
  201.     cfprintf("Begin seq_test3 -- dupname inserts\n");
  202.     myitem.a2.type = STO_VALUE;
  203.     for(i = 0; i < 200; ++i)
  204.     {
  205.     DupName numdups;
  206.         myitem.a0 = i;
  207.         if(cfinsert_dupname(hd, "XXXX", 4, &myitem, &numdups) != OK)
  208.             cfprintf("Insert failed for hash at i=%d\n", i);
  209.         if(numdups.name != i+1)
  210.             cfprintf("Wrong number of dups for hash is=%d should be=%d\n", numdups.name, i+1);
  211.         if(cfinsert_dupname(hd1, "XXXX", 4, &myitem, &numdups) != OK)
  212.             cfprintf("Insert failed for tree at i=%d\n", i);
  213.         if(numdups.name != i+1)
  214.             cfprintf("Wrong number of dups for tree is=%d should be=%d\n", numdups.name, i+1);
  215.     }
  216.     myitem.a0 = 1000;
  217.     if(cfhead_dupname(hd, "XXXX", 4, &myitem) != OK)
  218.         cfprintf("Head failed for hash dir.\n");
  219.     if(myitem.a0 > 199)
  220.         cfprintf("Data failed for Head hashdir =%d\n", myitem.a0);
  221.  
  222.     myitem.a0 = 1000;
  223.     if(cftail_dupname(hd, "XXXX", 4, &myitem) != OK)
  224.         cfprintf("Tail failed for hash dir.\n");
  225.     if(myitem.a0 > 199)
  226.         cfprintf("Data failed for Tail hashdir =%d\n", myitem.a0);
  227.     
  228.     myitem.a0 = 1000;
  229.     if(cfhead_dupname(hd1, "XXXX", 4, &myitem) != OK)
  230.         cfprintf("Head failed for tree dir.\n");
  231.     if(myitem.a0 != 0)
  232.         cfprintf("Data failed for Head treedir =%d\n", myitem.a0);
  233.     if(cftail_dupname(hd1, "XXXX", 4, &myitem) != OK)
  234.         cfprintf("Tail failed for tree dir.\n");    
  235.     if(myitem.a0 != 199)
  236.         cfprintf("Data failed for Tail treedir =%d\n", myitem.a0);
  237.  
  238.     cfhead_dupname(hd, "XXXX", 4, &myitem);
  239.     finds[myitem.a0] = myitem.a0;
  240.     cfhead_dupname(hd1, "XXXX", 4, &myitem);
  241.     for(i = 1; i < 200; ++i)
  242.     {
  243.         if(cfnext_dupname(hd, "XXXX", 4, &myitem) != OK)
  244.             cfprintf("Next failed for hashdir at i=%d item=%d\n", i, myitem.a0);
  245.         if(myitem.a0 > 199)
  246.             cfprintf("Data failed for Next hashdir at i=%d item=%d\n", i, myitem.a0);
  247.         finds[myitem.a0] = myitem.a0;
  248.  
  249.         myitem.a0 = 0;
  250.         if(cfnext_dupname(hd1, "XXXX", 4, &myitem) != OK)
  251.             cfprintf("Next failed for treedir at i=%d item=%d\n", i, myitem.a0);
  252.         if(myitem.a0 != i)
  253.             cfprintf("Data failed for Next treedir at i=%d item=%d\n", i, myitem.a0);
  254.     }
  255.     cftail_dupname(hd, "XXXX", 4, &myitem);
  256.     finds[myitem.a0] = myitem.a0;
  257.     cftail_dupname(hd1, "XXXX", 4, NULL);
  258.     for(i=198; i >= 0; --i)
  259.     {
  260.         if(cfprev_dupname(hd, "XXXX", 4, &myitem) != OK)
  261.             cfprintf("Prev failed for hashdir at i=%d item=%d\n", i, myitem.a0);
  262.         if(myitem.a0 > 199)
  263.             cfprintf("Data failed for Prev hashdir at i=%d item=%d\n", i, myitem.a0);
  264.         finds[myitem.a0] = myitem.a0;
  265.  
  266.         myitem.a0 = 0;
  267.         if(cfprev_dupname(hd1, "XXXX", 4, &myitem) != OK)
  268.             cfprintf("Prev failed for treedir at i=%d item=%d\n", i, myitem.a0);
  269.         if(myitem.a0 != i)
  270.             cfprintf("Data failed for Prev treedir at i=%d item=%d\n", i, myitem.a0);
  271.  
  272.     }
  273.     for(i = 0; i < 200; ++i)
  274.         if(finds[i] != i)
  275.             cfprintf("Hash find failed at i=%d data=%d\n", i, finds[i]);
  276.  
  277.     cfprintf("End seq_test3\n");
  278. }
  279.  
  280.